import { defineStore } from 'pinia'
import { setRouteRedirect } from '@/utils/permission';
import { asyncRoutes } from '@/router'
import { RouteRecordRaw } from 'vue-router'
export const useUserStore = defineStore('user', {
    state: () => {
        return {
            routesList: [],//权限列表
            firstLoad: true, //是否首次加载
        }
    },
    getters: {

    },
    actions: {
        SET_ROUTESLIST(state: Array<RouteRecordRaw>) {
            //设置权限列表
            this.routesList = state;
        },
        SET_FIRSTLOAD(state: boolean) {
            //设置是否首次加载
            this.firstLoad = state;
        },
        getUserPermissions(): Promise<Array<RouteRecordRaw>> {
            return new Promise((resolve, reject) => {
                //通过接口获取权限 进行处理后resolve返回

                //数据持久化配置已完成 真实业务时 对asyncRoutes进行递归匹配出具有权限的列表 设置重定向后返回

                let list = setRouteRedirect(asyncRoutes)//处理重定向

                this.SET_ROUTESLIST(list);

                resolve(list);
            })
        },
    },
    // 开启数据缓存
    // persist: {
    //     enabled: true,
    //     strategies: [
    //         {
    //             paths: []
    //         }
    //     ]
    // }
})